KFbxLayerElementArray Class Reference

#include <kfbxlayer.h>
Inheritance diagram for KFbxLayerElementArray:
Inheritance graph
[legend]

List of all members.


Detailed Description

KFbxLayerElementArray is the base class for KFbxLayerElementArrayTemplate, it provides lock handling and data array manipulation of the data buffer for KFbxLayerElement.

Definition at line 411 of file kfbxlayer.h.


Constructor and Destructor

  KFbxLayerElementArray (EFbxType pDataType)
  Constructor.
virtual  ~KFbxLayerElementArray ()
  Destructor.

Status handling

void  ClearStatus ()
  Clears the access state and sets it to eSuccess.
LockAccessStatus::ELockAccessStatus  GetStatus () const
  Retrieves the access state.

Locks handling

bool  IsWriteLocked () const
  Returns whether write is locked.
int  GetReadLockCount () const
  Retrieves the read lock count.

Data array manipulation

int  GetCount () const
  Returns the count of items in the data buffer.
void  SetCount (int pCount)
  Sets the count of items in the data buffer.
void  Clear ()
  Clears the data buffer.
void  Resize (int pItemCount)
  Resizes the data buffer.
void  AddMultiple (int pItemCount)
  Appends space to the data buffer.
int  Add (void const *pItem, EFbxType pValueType)
  Appends a new item to the end of the data buffer.
int  InsertAt (int pIndex, void const *pItem, EFbxType pValueType)
  Inserts a new item at the specified position of the data buffer.
void  SetAt (int pIndex, void const *pItem, EFbxType pValueType)
  Sets the value for the specified item.
void  SetLast (void const *pItem, EFbxType pValueType)
  Sets the value of the last item.
void  RemoveAt (int pIndex, void **pItem, EFbxType pValueType)
  Removes the specified item from the data buffer.
void  RemoveLast (void **pItem, EFbxType pValueType)
  Removes the last item from the data buffer.
bool  RemoveIt (void **pItem, EFbxType pValueType)
  Removes one item from the data buffer.
bool  GetAt (int pIndex, void **pItem, EFbxType pValueType) const
  Returns the specified item's value.
bool  GetFirst (void **pItem, EFbxType pValueType) const
  Returns the first item's value.
bool  GetLast (void **pItem, EFbxType pValueType) const
  Returns the last item's value.
int  Find (void const *pItem, EFbxType pValueType) const
  Searches for an item in the data buffer.
int  FindAfter (int pAfterIndex, void const *pItem, EFbxType pValueType) const
  Searches for an item after the specified index in the data buffer.
int  FindBefore (int pBeforeIndex, void const *pItem, EFbxType pValueType) const
  Searches for an item before the specified index in the data buffer.
bool  IsEqual (const KFbxLayerElementArray &pArray)
  Equivalence operator.
template<class T>
int  Add (T const &pItem)
  Appends a new item to the end of the data buffer.
template<class T>
int  InsertAt (int pIndex, T const &pItem)
  Inserts a new item at the specified position of the data buffer.
template<class T>
void  SetAt (int pIndex, T const &pItem)
  Sets the value of the specified item.
template<class T>
void  SetLast (T const &pItem)
  Sets the value of the last item.
template<class T>
void  RemoveAt (int pIndex, T *pItem)
  Removes the specified item from the data buffer.
template<class T>
void  RemoveLast (T *pItem)
  Removes the last item from the data buffer.
template<class T>
bool  RemoveIt (T *pItem)
  Removes one item from the data buffer.
template<class T>
bool  GetAt (int pIndex, T *pItem) const
  Returns the specified item's value.
template<class T>
bool  GetFirst (T *pItem) const
  Returns the first item's value.
template<class T>
bool  GetLast (T *pItem) const
  Returns the last item's value.
template<class T>
int  Find (T const &pItem) const
  Searches for an item in the data buffer.
template<class T>
int  FindAfter (int pAfterIndex, T const &pItem) const
  Searches for an item after the specified index in the data buffer.
template<class T>
int  FindBefore (int pBeforeIndex, T const &pItem) const
  Searches for one item before the specified index in the data buffer.
template<typename T>
void  CopyTo (KArrayTemplate< T > &pDst)
  Copies the items in the data buffer to an array.

Public Types

enum   ELockMode {
   eREAD_LOCK = 1,
   eWRITE_LOCK = 2,
   eREADWRITE_LOCK = 3
}
  Identifies the access mode to the data buffer. More...

Public Member Functions

bool  IsInUse () const
  Returns whether this Array is accessed in any way.
int  ReadLock () const
  Increments the number of read locks on this array.
int  ReadUnlock () const
  Releases a read lock on this array.
bool  WriteLock () const
  Locks this array for writing.
void  WriteUnlock () const
  Releases the write lock on this array.
bool  ReadWriteLock () const
  Locks this array for writing.
void  ReadWriteUnlock () const
  Releases the write lock on this array.
virtual void *  GetLocked (ELockMode pLockMode, EFbxType pDataType)
  Grants a locked access to the data buffer.
void *  GetLocked (ELockMode pLockMode=eREADWRITE_LOCK)
  Grants a locked access to the data buffer.
template<class T>
T *  GetLocked (T *dummy=NULL, ELockMode pLockMode=eREADWRITE_LOCK)
  Grants a locked access to the data buffer.
virtual void  Release (void **pDataPtr, EFbxType pDataType)
  Unlock the data buffer.
void  Release (void **pDataPtr)
  Unlock the data buffer.
template<class T>
void  Release (T **pDataPtr, T *dummy)
  Unlock the data buffer.
virtual size_t  GetStride () const
  Returns the Stride size which equals the size of the data type of the data buffer.

Protected Member Functions

void *  GetDataPtr ()
void *  GetReference (int pIndex, EFbxType pValueType)
void  GetReferenceTo (int pIndex, void **pRef, EFbxType pValueType)
void  SetStatus (LockAccessStatus::ELockAccessStatus pVal) const
void  SetImplementation (void *pImplementation)
void *  GetImplementation ()
virtual void  ConvertDataType (EFbxType pDataType, void **pDataPtr, size_t *pStride)

Protected Attributes

EFbxType  mDataType

Member Enumeration Documentation

enum ELockMode

Identifies the access mode to the data buffer.

  • eREAD_LOCK Read mode.
  • eWRITE_LOCK Write mode.
  • eREADWRITE_LOCK Read-write mode.
Enumerator:
eREAD_LOCK 
eWRITE_LOCK 
eREADWRITE_LOCK 

Definition at line 498 of file kfbxlayer.h.


Constructor & Destructor Documentation

KFbxLayerElementArray ( EFbxType  pDataType  ) 

Constructor.

Parameters:
pDataType  The data type of the items in the data array.

virtual ~KFbxLayerElementArray (  )  [virtual]

Destructor.


Member Function Documentation

void ClearStatus (  )  [inline]

Clears the access state and sets it to eSuccess.

Definition at line 435 of file kfbxlayer.h.

References LockAccessStatus::eSuccess.

LockAccessStatus::ELockAccessStatus GetStatus (  )  const [inline]

Retrieves the access state.

Definition at line 438 of file kfbxlayer.h.

bool IsWriteLocked (  )  const [inline]

Returns whether write is locked.

Returns:
True if write is locked, false otherwise.

Definition at line 449 of file kfbxlayer.h.

int GetReadLockCount (  )  const [inline]

Retrieves the read lock count.

Returns:
The read lock count.

Definition at line 454 of file kfbxlayer.h.

bool IsInUse (  )  const

Returns whether this Array is accessed in any way.

Returns:
True if it is in use, false otherwise.

int ReadLock (  )  const

Increments the number of read locks on this array.

Returns:
The current number of read locks (including the one just grabbed) or 0 if a write lock is active.

Referenced by KFbxLayerElementTemplate< KFbxSurfaceMaterial * >::operator==().

int ReadUnlock (  )  const

Releases a read lock on this array.

Returns:
The remaining read locks or -1 if a write lock is active.

Referenced by KFbxLayerElementTemplate< KFbxSurfaceMaterial * >::operator==().

bool WriteLock (  )  const

Locks this array for writing.

The data in the array is wiped out.

Returns:
True if a write lock has been successfully granted, false if one or more read locks are active.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::operator=().

void WriteUnlock (  )  const

Releases the write lock on this array.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::operator=().

bool ReadWriteLock (  )  const

Locks this array for writing.

The data that already exists in the array is kept and is valid.

Returns:
True if a write lock has been successfully granted, false if one or more read locks are active.

void ReadWriteUnlock (  )  const

Releases the write lock on this array.

virtual void* GetLocked ( ELockMode  pLockMode,
EFbxType  pDataType  
) [virtual]

Grants a locked access to the data buffer.

Parameters:
pLockMode  Access mode to the data buffer.
pDataType  If defined, tries to return the data as this type.
Returns:
A pointer to the data buffer or NULL if a failure occurs.
Remarks:
In the case of a failure, the Status is updated with the reason for the failure. Also, when a type conversion occurs, a second buffer of the new type is allocated. In this case, the LockMode does not apply to the returned buffer since it is a copy but it does apply to the internal data of this object. The returned buffer still remains a property of this object and is deleted when the pointer is released or the object is destroyed. At the moment of release or destruction, the values in this buffer are copied back into this object.

Referenced by KFbxLayerElementArrayReadLock::KFbxLayerElementArrayReadLock().

void* GetLocked ( ELockMode  pLockMode = eREADWRITE_LOCK  )  [inline]

Grants a locked access to the data buffer.

Parameters:
pLockMode  Access mode to the data buffer.
Returns:
A pointer to the data buffer or NULL if a failure occurs.
Remarks:
In the case of a failure, the Status is updated with the reason for the failure. Also, when a type conversion occurs, a second buffer of the new type is allocated. In this case, the LockMode does not apply to the returned buffer since it is a copy but it does apply to the internal data of this object. The returned buffer still remains a property of this object and is deleted when the pointer is released or the object is destroyed. At the moment of release or destruction, the values in this buffer are copied back into this object.

Definition at line 529 of file kfbxlayer.h.

T* GetLocked ( T *  dummy = NULL,
ELockMode  pLockMode = eREADWRITE_LOCK  
) [inline]

Grants a locked access to the data buffer.

Parameters:
dummy  The data type of dummy is used to specialize this function.
pLockMode  Access mode to the data buffer.
Returns:
A pointer to the data buffer or NULL if a failure occurs.
Remarks:
In the case of a failure, the Status is updated with the reason for the failure. Also, when a type conversion occurs, a second buffer of the new type is allocated. In this case, the LockMode does not apply to the returned buffer since it is a copy but it does apply to the internal data of this object. The returned buffer still remains a property of this object and is deleted when the pointer is released or the object is destroyed. At the moment of release or destruction, the values in this buffer are copied back into this object.

Definition at line 543 of file kfbxlayer.h.

References _FbxTypeOf().

virtual void Release ( void **  pDataPtr,
EFbxType  pDataType  
) [virtual]

Unlock the data buffer.

Parameters:
pDataPtr  The buffer to be released.
pDataType  The data type of the data buffer.
Remarks:
The passed pointer must be the one obtained by the call to GetLocked(). Any other pointer causes this method to fail and the Status is updated with the reason for the failure. If the passed pointer refers a converted data buffer (see comment of GetLocked), this method copies the GetCount() items of the received buffer back into this object. Any other items that may have been added using a realloc call are ignored.

Referenced by KFbxLayerElementArrayReadLock::~KFbxLayerElementArrayReadLock().

void Release ( void **  pDataPtr  )  [inline]

Unlock the data buffer.

Parameters:
pDataPtr  The buffer to be released.
Remarks:
The passed pointer must be the one obtained by the call to GetLocked(). Any other pointer causes this method to fail and the Status is updated with the reason for the failure. If the passed pointer refers a converted data buffer (see comment of GetLocked), this method copies the GetCount() items of the received buffer back into this object. Any other items that may have been added using a realloc call are ignored.

Definition at line 566 of file kfbxlayer.h.

void Release ( T **  pDataPtr,
T *  dummy  
) [inline]

Unlock the data buffer.

Parameters:
pDataPtr  The buffer to be released.
dummy  The data type of dummy is used to specialize this function.
Remarks:
The passed pointer must be the one obtained by the call to GetLocked(). Any other pointer causes this method to fail and the Status is updated with the reason for the failure. If the passed pointer refers a converted data buffer (see comment of GetLocked), this method copies the GetCount() items of the received buffer back into this object. Any other items that may have been added using a realloc call are ignored.

Definition at line 578 of file kfbxlayer.h.

References _FbxTypeOf().

virtual size_t GetStride (  )  const [virtual]

Returns the Stride size which equals the size of the data type of the data buffer.

int GetCount (  )  const

void SetCount ( int  pCount  ) 

Sets the count of items in the data buffer.

Parameters:
pCount  The count of items to be set.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::operator=().

void Clear (  ) 

Clears the data buffer.

void Resize ( int  pItemCount  ) 

Resizes the data buffer.

Parameters:
pItemCount  The new size of the data buffer.

void AddMultiple ( int  pItemCount  ) 

Appends space to the data buffer.

Parameters:
pItemCount  The appended space size

int Add ( void const *  pItem,
EFbxType  pValueType  
)

Appends a new item to the end of the data buffer.

Parameters:
pItem  Pointer of the new item to be added
pValueType  Data type of the new item
Returns:
The index of the new item

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::Add().

int InsertAt ( int  pIndex,
void const *  pItem,
EFbxType  pValueType  
)

Inserts a new item at the specified position of the data buffer.

Parameters:
pIndex  The specified position
pItem  Pointer of the new item to be inserted
pValueType  Data type of the new item
Returns:
The index of the inserted item

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::InsertAt().

void SetAt ( int  pIndex,
void const *  pItem,
EFbxType  pValueType  
)

Sets the value for the specified item.

Parameters:
pIndex  The index of the item to be updated.
pItem  Pointer of the item whose value is copied to pIndex'th item
pValueType  Data type of the item

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::SetAt().

void SetLast ( void const *  pItem,
EFbxType  pValueType  
)

Sets the value of the last item.

Parameters:
pItem  Pointer of the item whose value is copied to the last item
pValueType  Data type of the item

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::SetLast().

void RemoveAt ( int  pIndex,
void **  pItem,
EFbxType  pValueType  
)

Removes the specified item from the data buffer.

Parameters:
pIndex  The index of the item to be removed
pItem  Place to hold the value of the removed item.
pValueType  Data type of the item

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::RemoveAt().

void RemoveLast ( void **  pItem,
EFbxType  pValueType  
)

Removes the last item from the data buffer.

Parameters:
pItem  Place to hold the value of the removed item.
pValueType  Data type of the item

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::RemoveLast().

bool RemoveIt ( void **  pItem,
EFbxType  pValueType  
)

Removes one item from the data buffer.

Parameters:
pItem  The first item who equals pItem is to be removed
pValueType  Data type of the item
Returns:
True if the item is removed successfully, false otherwise

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::RemoveIt().

bool GetAt ( int  pIndex,
void **  pItem,
EFbxType  pValueType  
) const

Returns the specified item's value.

Parameters:
pIndex  Index of the item
pItem  Place to hold the item's value
pValueType  Data type of the item
Returns:
True if the item's value is returned successfully, false otherwise
Remarks:
If the index is invalid, pItem is set to zero.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::GetAt(), and KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::operator[]().

bool GetFirst ( void **  pItem,
EFbxType  pValueType  
) const

Returns the first item's value.

Parameters:
pItem  Place to hold the item's value
pValueType  Data type of the item
Returns:
True if the item's value is returned successfully, false otherwise

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::GetFirst().

bool GetLast ( void **  pItem,
EFbxType  pValueType  
) const

Returns the last item's value.

Parameters:
pItem  Place to hold the item's value
pValueType  Data type of the item
Returns:
True if the item's value is returned successfully, false otherwise

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::GetLast().

int Find ( void const *  pItem,
EFbxType  pValueType  
) const

Searches for an item in the data buffer.

Parameters:
pItem  The value of the item for which to search.
pValueType  Data type of the item
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::Find().

int FindAfter ( int  pAfterIndex,
void const *  pItem,
EFbxType  pValueType  
) const

Searches for an item after the specified index in the data buffer.

Parameters:
pAfterIndex  The specified index after which the searching begins
pItem  The value of the item for which to search, the searching begins after pAfterIndex.
pValueType  Data type of the item
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::FindAfter().

int FindBefore ( int  pBeforeIndex,
void const *  pItem,
EFbxType  pValueType  
) const

Searches for an item before the specified index in the data buffer.

Parameters:
pBeforeIndex  The specified index before which the searching begins
pItem  The value of the item for which to search, the searching begins before pBeforeIndex.
pValueType  The item's data type.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Referenced by KFbxLayerElementArrayTemplate< KFbxSurfaceMaterial * >::FindBefore().

bool IsEqual ( const KFbxLayerElementArray pArray  ) 

Equivalence operator.

Parameters:
pArray  Array compared to this one
Returns:
True if equal. false otherwise.

int Add ( T const &  pItem  )  [inline]

Appends a new item to the end of the data buffer.

Parameters:
pItem  The new item to be added
Returns:
The index of the new item

Reimplemented in KFbxLayerElementArrayTemplate.

Definition at line 718 of file kfbxlayer.h.

References _FbxTypeOf().

int InsertAt ( int  pIndex,
T const &  pItem  
) [inline]

Inserts a new item at the specified position of the data buffer.

Parameters:
pIndex  The specified position
pItem  The new item to be inserted
Returns:
The index of the inserted item

Reimplemented in KFbxLayerElementArrayTemplate.

Definition at line 725 of file kfbxlayer.h.

References _FbxTypeOf().

void SetAt ( int  pIndex,
T const &  pItem  
) [inline]

Sets the value of the specified item.

Parameters:
pIndex  The index of the item to be updated.
pItem  The item whose value is copied to pIndex'th item

Reimplemented in KFbxLayerElementArrayTemplate.

Definition at line 731 of file kfbxlayer.h.

References _FbxTypeOf().

void SetLast ( T const &  pItem  )  [inline]

Sets the value of the last item.

Parameters:
pItem  The item whose value is copied to the last item

Reimplemented in KFbxLayerElementArrayTemplate.

Definition at line 736 of file kfbxlayer.h.

References _FbxTypeOf().

void RemoveAt ( int  pIndex,
T *  pItem  
) [inline]

Removes the specified item from the data buffer.

Parameters:
pIndex  The index of the item to be removed
pItem  Place to hold the value of the removed item.

Definition at line 742 of file kfbxlayer.h.

References _FbxTypeOf().

void RemoveLast ( T *  pItem  )  [inline]

Removes the last item from the data buffer.

Parameters:
pItem  Place to hold the value of the removed item.

Definition at line 747 of file kfbxlayer.h.

References _FbxTypeOf().

bool RemoveIt ( T *  pItem  )  [inline]

Removes one item from the data buffer.

Parameters:
pItem  The first item who equals pItem is to be removed
Returns:
True if the item is removed successfully, false otherwise

Definition at line 753 of file kfbxlayer.h.

References _FbxTypeOf().

bool GetAt ( int  pIndex,
T *  pItem  
) const [inline]

Returns the specified item's value.

Parameters:
pIndex  Index of the item
pItem  Place to hold the item's value
Returns:
True if the item's value is returned successfully, false otherwise
Remarks:
If the index is invalid, pItem is set to zero.

Definition at line 761 of file kfbxlayer.h.

References _FbxTypeOf().

bool GetFirst ( T *  pItem  )  const [inline]

Returns the first item's value.

Parameters:
pItem  Place to hold the item's value
Returns:
True if the item's value is returned successfully, false otherwise

Definition at line 767 of file kfbxlayer.h.

References _FbxTypeOf().

bool GetLast ( T *  pItem  )  const [inline]

Returns the last item's value.

Parameters:
pItem  Place to hold the item's value
Returns:
True if the item's value is returned successfully, false otherwise

Definition at line 773 of file kfbxlayer.h.

References _FbxTypeOf().

int Find ( T const &  pItem  )  const [inline]

Searches for an item in the data buffer.

Parameters:
pItem  The value of the item for which to search.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Definition at line 780 of file kfbxlayer.h.

References _FbxTypeOf().

int FindAfter ( int  pAfterIndex,
T const &  pItem  
) const [inline]

Searches for an item after the specified index in the data buffer.

Parameters:
pAfterIndex  The specified index after which the searching begins
pItem  The value of the item for which to search, the searching begins after pAfterIndex.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Definition at line 788 of file kfbxlayer.h.

References _FbxTypeOf().

int FindBefore ( int  pBeforeIndex,
T const &  pItem  
) const [inline]

Searches for one item before the specified index in the data buffer.

Parameters:
pBeforeIndex  The specified index before which the searching begins
pItem  The value of the item for which to search, the searching begins before pBeforeIndex.
Returns:
The index of the item found, -1 if not found.
Remarks:
The index of the first item whose value equals pItem is returned.

Definition at line 796 of file kfbxlayer.h.

References _FbxTypeOf().

void CopyTo ( KArrayTemplate< T > &  pDst  )  [inline]

Copies the items in the data buffer to an array.

Parameters:
pDst  The destination array where the items are to be copied.

Definition at line 802 of file kfbxlayer.h.

References _FbxTypeOf(), KBaseArray< KBaseArraySizeType< Type > >::Clear(), LockAccessStatus::eSuccess, LockAccessStatus::eUnsupportedDTConversion, KArrayTemplate::SetAt(), and KBaseArray< KBaseArraySizeType< Type > >::SetCount().

void* GetDataPtr (  )  [protected]

void* GetReference ( int  pIndex,
EFbxType  pValueType  
) [protected]

void GetReferenceTo ( int  pIndex,
void **  pRef,
EFbxType  pValueType  
) [protected]

void SetStatus ( LockAccessStatus::ELockAccessStatus  pVal  )  const [inline, protected]

void SetImplementation ( void *  pImplementation  )  [protected]

void* GetImplementation (  )  [inline, protected]

Definition at line 837 of file kfbxlayer.h.

virtual void ConvertDataType ( EFbxType  pDataType,
void **  pDataPtr,
size_t *  pStride  
) [protected, virtual]

Member Data Documentation

EFbxType mDataType [protected]

Definition at line 840 of file kfbxlayer.h.

KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray
KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray KFbxLayerElementArray